package com.it.collect_set;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

/**
 * TreeSet 特点：可排序(升序) 不重复 无索引
 * 底层是基于红黑树实现的、
 * 注意：
 * 对于数值类型: Integer,Double 默认按照数值本身的大小进行升序排序
 * 对于字符串类型：默认按照首字母的编号升序排序
 * 对应自定义对象Student对象，TreeSet默认是无法直接排序的
 */
public class Test4 {
    public static void main(String[] args) {
        Set<Integer> set1 = new TreeSet<>();
        set1.add(6);
        set1.add(5);
        set1.add(5);
        set1.add(7);
        System.out.println(set1);

        /**
         * 方式二：
         *  通过调用TreeSet集合有参数构造器，可以设置Comparator对象(比较器对象,用于指定比较规则)
         */
        // TreeSet就近选择自己自带的比较器对象进行排序
//        Set<Student> students = new TreeSet<>(new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                // 需求：按照身高升序排序
//                return Double.compare(o1.getHeight() , o2.getHeight());
//            }
//        });

//        Set<Student> students = new TreeSet<>((o1, o2)-> Double.compare(o1.getHeight() , o2.getHeight()));

        Set<Student> students = new TreeSet<>();
        students.add(new Student("至尊宝", 28, 169.9));

        students.add(new Student("至尊宝", 28, 169.9));
        students.add(new Student("蜘蛛精", 23, 160.9));
        students.add(new Student("紫霞", 26, 150.9));
        students.add(new Student("牛魔二", 26, 180.9));
        System.out.println(students);
    }
}
